home *** CD-ROM | disk | FTP | other *** search
- class FPUI.Scrollbar extends FPUI.Component
- {
- var controller;
- var m_scrollPosition = 0;
- var m_maxPos = 0;
- var m_pageSize = 0;
- var m_scrollTop = 0;
- var m_scrollBot = 0;
- var m_trackHeight = 0;
- var m_largeScroll = 0;
- var m_smallScroll = 1;
- var m_thumbHeight = 0;
- var m_horizontal = false;
- var m_isScrolling = false;
- var m_scrollingIntervalID = 0;
- var m_scrollThumbMC = null;
- var m_upArrowMC = null;
- var m_downArrowMC = null;
- var m_mouseOverMC = null;
- function Scrollbar()
- {
- var _loc1_ = this;
- super();
- _loc1_.tabEnabled = false;
- _loc1_.tabChildren = false;
- _loc1_.m_horizontal = _loc1_._width > _loc1_._height;
- _loc1_.m_width = !_loc1_.m_horizontal ? _loc1_._height : _loc1_._width;
- _loc1_._xscale = 100;
- _loc1_._yscale = 100;
- _loc1_.setScrollPosition(0);
- _loc1_.setSize(_loc1_.m_width);
- }
- function setHorizontal(flag)
- {
- var _loc1_ = this;
- var _loc2_ = flag;
- if(_loc1_.m_horizontal && !_loc2_)
- {
- _loc1_._xscale = 100;
- _loc1_._rotation = 0;
- }
- else if(_loc2_ && !_loc1_.m_horizontal)
- {
- _loc1_._xscale = -100;
- _loc1_._rotation = -90;
- }
- _loc1_.m_horizontal = _loc2_;
- }
- static function clearUIFuncs(mc)
- {
- var _loc1_ = mc;
- _loc1_.gotoAndStop("disabled");
- _loc1_.onPress = null;
- _loc1_.onRelease = null;
- _loc1_.onDragOver = null;
- _loc1_.onDragOut = null;
- _loc1_.onRollOver = null;
- _loc1_.onRollOut = null;
- _loc1_.onReleaseOutside = null;
- _loc1_.useHandCursor = false;
- }
- function setScrollProperties(pSize, mxPos)
- {
- var _loc1_ = this;
- _loc1_.m_pageSize = pSize;
- _loc1_.m_maxPos = Math.max(mxPos,0);
- _loc1_.m_scrollPosition = Math.max(0,_loc1_.m_scrollPosition);
- _loc1_.m_scrollPosition = Math.min(_loc1_.m_maxPos,_loc1_.m_scrollPosition);
- FPUI.Scrollbar.clearUIFuncs(_loc1_.m_upArrowMC);
- FPUI.Scrollbar.clearUIFuncs(_loc1_.m_downArrowMC);
- FPUI.Scrollbar.clearUIFuncs(_loc1_.scrollTrack_mc);
- _loc1_.m_scrollThumbMC.removeMovieClip();
- if(_loc1_.m_maxPos > 0)
- {
- var _loc2_ = undefined;
- _loc2_ = _loc1_.m_upArrowMC;
- _loc2_.gotoAndStop("up");
- if(_loc1_.m_enable)
- {
- _loc2_.onPress = _loc2_.onDragOver = function()
- {
- this.controller.startUpDownScroller(this,-1);
- };
- _loc2_.onRelease = _loc2_.onDragOut = function()
- {
- this.controller.stopScrolling();
- };
- _loc2_.onRollOver = function()
- {
- this.controller.rolloverPart(this);
- };
- _loc2_.onRollOut = _loc2_.onReleaseOutside = function()
- {
- this.controller.rolloutPart(this);
- };
- }
- _loc2_._alpha = !_loc1_.m_enable ? 50 : 100;
- _loc2_ = _loc1_.m_downArrowMC;
- _loc2_.gotoAndStop("up");
- if(_loc1_.m_enable)
- {
- _loc2_.onPress = _loc2_.onDragOver = function()
- {
- this.controller.startUpDownScroller(this,1);
- };
- _loc2_.onRelease = _loc2_.onDragOut = function()
- {
- this.controller.stopScrolling();
- };
- _loc2_.onRollOver = function()
- {
- this.controller.rolloverPart(this);
- };
- _loc2_.onRollOut = _loc2_.onReleaseOutside = function()
- {
- this.controller.rolloutPart(this);
- };
- }
- _loc2_._alpha = !_loc1_.m_enable ? 50 : 100;
- _loc2_ = _loc1_.scrollTrack_mc;
- _loc2_.gotoAndStop("enabled");
- if(_loc1_.m_enable)
- {
- _loc2_.onPress = _loc2_.onDragOver = function()
- {
- this.controller.startTrackScroller();
- };
- _loc2_.onRelease = _loc2_.onDragOut = _loc2_.onRollOut = function()
- {
- this.controller.stopScrolling();
- };
- }
- var tmp = _loc1_.getScrollPosition();
- _loc2_ = _loc1_.attachMovie("mScrollThumb","m_scrollThumbMC",3);
- _loc2_._x = 1;
- _loc2_._y = 13;
- if(_loc1_.m_enable)
- {
- _loc2_.useHandCursor = false;
- _loc2_.controller = _loc1_;
- _loc2_.onPress = function()
- {
- this.controller.startDragThumb();
- };
- _loc2_.onRelease = _loc2_.onReleaseOutside = function()
- {
- this.controller.stopDragThumb();
- };
- _loc2_.onRollOver = function()
- {
- this.controller.rollOverOrOutOfThumb(true);
- };
- _loc2_.onRollOut = function()
- {
- this.controller.rollOverOrOutOfThumb(false);
- };
- _loc2_.onDragOut = function()
- {
- this.controller.dragoutThumb();
- };
- }
- else
- {
- FPUI.Scrollbar.clearUIFuncs(_loc2_);
- }
- _loc2_._alpha = !_loc1_.m_enable ? 50 : 100;
- var _loc3_ = _loc1_.m_width - 32;
- _loc1_.m_thumbHeight = Math.max(_loc1_.m_pageSize / (_loc1_.m_maxPos + _loc1_.m_pageSize) * _loc3_,26);
- var midHeight = _loc1_.m_thumbHeight - 10;
- _loc2_.mc_sliderMid._yScale = midHeight * 100 / _loc2_.mc_sliderMid._height;
- _loc2_.mc_sliderMid._y = 2;
- _loc2_.grips._y = Math.floor(_loc1_.m_thumbHeight / 2 - _loc2_.grips._height / 2 - 1.5);
- _loc2_.mc_sliderBot._y = 5 + midHeight - 3;
- _loc1_.m_scrollTop = _loc2_._y + 3;
- _loc1_.m_trackHeight = _loc3_ - _loc1_.m_thumbHeight + 3;
- _loc1_.m_scrollBot = _loc1_.m_scrollTop + _loc1_.m_trackHeight;
- _loc1_.m_scrollPosition = Infinity;
- _loc1_.setScrollPosition(tmp);
- }
- }
- function getScrollPosition()
- {
- return this.m_scrollPosition;
- }
- function setScrollPosition(pos)
- {
- var _loc1_ = this;
- var _loc2_ = pos;
- if(_loc1_.m_scrollPosition != _loc2_)
- {
- _loc2_ = Math.max(Math.min(_loc2_,_loc1_.m_maxPos),0);
- if(_loc1_.m_scrollPosition != _loc2_)
- {
- _loc1_.m_scrollPosition = _loc2_;
- _loc1_.m_scrollThumbMC._y = Math.round(_loc1_.m_scrollPosition * _loc1_.m_trackHeight / _loc1_.m_maxPos) + _loc1_.m_scrollTop;
- _loc1_.executeCallBack();
- return true;
- }
- }
- return false;
- }
- function setLargeScroll(lScroll)
- {
- this.m_largeScroll = lScroll;
- }
- function setSmallScroll(sScroll)
- {
- this.m_smallScroll = sScroll;
- }
- function setEnabled(enabledFlag)
- {
- var _loc1_ = this;
- _loc1_.m_enable = enabledFlag;
- _loc1_.setScrollProperties(_loc1_.m_pageSize,_loc1_.m_maxPos);
- }
- function getSize()
- {
- var _loc1_ = this;
- if(!_loc1_.m_horizontal)
- {
- return _loc1_._height;
- }
- return _loc1_._width;
- }
- function getMaxPos()
- {
- return this.m_maxPos;
- }
- function setSize(hgt)
- {
- var _loc1_ = this;
- if(_loc1_._height != 1)
- {
- _loc1_.m_width = hgt + 1;
- var _loc2_ = _loc1_.scrollTrack_mc;
- _loc2_._yscale = 100;
- _loc2_._yscale = 100 * _loc1_.m_width / _loc2_._height;
- if(_loc1_.m_upArrowMC == undefined)
- {
- _loc1_.attachMovie("mUpArrow","m_upArrowMC",1);
- _loc1_.attachMovie("mDownArrow","m_downArrowMC",2);
- _loc1_.m_downArrowMC.controller = _loc1_.m_upArrowMC.controller = _loc1_;
- _loc1_.m_upArrowMC.useHandCursor = _loc1_.m_downArrowMC.useHandCursor = false;
- _loc1_.m_upArrowMC._x = _loc1_.m_upArrowMC._y = 0;
- _loc1_.m_downArrowMC._x = 0;
- }
- _loc2_.controller = _loc1_;
- _loc1_.m_downArrowMC._y = _loc1_.m_width - 16;
- _loc1_.setScrollProperties(_loc1_.m_pageSize,_loc1_.m_maxPos);
- _loc2_.topShad._yscale = 100;
- _loc2_.topShad._xscale = 100;
- _loc2_.topShad._y = _loc2_._y + 8;
- _loc2_.botShad._yscale = 100;
- _loc2_.botShad._xscale = 100;
- _loc2_.botShad._y = _loc1_.m_downArrowMC._y - 8;
- }
- }
- function scrollIt(inc, mode)
- {
- var _loc1_ = this;
- var _loc2_ = _loc1_.m_smallScroll;
- if(inc != "one")
- {
- _loc2_ = _loc1_.m_largeScroll != 0 ? _loc1_.m_largeScroll : _loc1_.m_pageSize;
- }
- _loc1_.setScrollPosition(_loc1_.getScrollPosition() + mode * _loc2_);
- }
- function sliderGoTo(state)
- {
- var _loc2_ = state;
- var _loc1_ = this.m_scrollThumbMC;
- _loc1_.mc_sliderTop.gotoAndStop(_loc2_);
- _loc1_.mc_sliderBot.gotoAndStop(_loc2_);
- _loc1_.mc_sliderMid.gotoAndStop(_loc2_);
- _loc1_.grips.gotoAndStop(_loc2_);
- }
- function startDragThumb()
- {
- var _loc1_ = this;
- _loc1_.sliderGoTo("down");
- _loc1_.m_scrollThumbMC.lastY = _loc1_.m_scrollThumbMC._ymouse;
- _loc1_.m_scrollThumbMC.onMouseMove = function()
- {
- this.controller.dragThumb();
- };
- }
- function dragThumb()
- {
- var _loc1_ = this;
- _loc1_.m_scrollThumbMC.scrollMove = _loc1_.m_scrollThumbMC._ymouse - _loc1_.m_scrollThumbMC.lastY + _loc1_.m_scrollThumbMC._y;
- if(_loc1_.m_scrollThumbMC.scrollMove < _loc1_.m_scrollTop)
- {
- _loc1_.m_scrollThumbMC.scrollMove = _loc1_.m_scrollTop;
- }
- else if(_loc1_.m_scrollThumbMC.scrollMove > _loc1_.m_scrollBot)
- {
- _loc1_.m_scrollThumbMC.scrollMove = _loc1_.m_scrollBot;
- }
- _loc1_.m_scrollThumbMC._y = _loc1_.m_scrollThumbMC.scrollMove;
- _loc1_.m_scrollPosition = Math.round(_loc1_.m_maxPos * (_loc1_.m_scrollThumbMC._y - _loc1_.m_scrollTop) / _loc1_.m_trackHeight);
- _loc1_.m_isScrolling = true;
- updateAfterEvent();
- _loc1_.executeCallBack();
- }
- function stopDragThumb()
- {
- var _loc1_ = this;
- _loc1_.sliderGoTo(_loc1_.m_mouseOverMC != _loc1_.m_scrollThumbMC ? "up" : "over");
- _loc1_.m_isScrolling = false;
- _loc1_.m_scrollThumbMC.onMouseMove = null;
- }
- function rollOverOrOutOfThumb(over)
- {
- var _loc1_ = this;
- if(over)
- {
- _loc1_.m_mouseOverMC = _loc1_.m_scrollThumbMC;
- }
- else if(_loc1_.m_mouseOverMC == _loc1_.m_scrollThumbMC)
- {
- _loc1_.m_mouseOverMC = null;
- }
- _loc1_.sliderGoTo(!over ? "up" : "over");
- }
- function dragoutThumb()
- {
- var _loc1_ = this;
- if(_loc1_.m_mouseOverMC == _loc1_.m_scrollThumbMC)
- {
- _loc1_.m_mouseOverMC = null;
- }
- }
- function stopScrolling()
- {
- var _loc1_ = this;
- _loc1_.m_downArrowMC.gotoAndStop(_loc1_.m_mouseOverMC != _loc1_.m_downArrowMC ? "up" : "over");
- _loc1_.m_upArrowMC.gotoAndStop(_loc1_.m_mouseOverMC != _loc1_.m_upArrowMC ? "up" : "over");
- clearInterval(_loc1_.m_scrollingIntervalID);
- }
- function rolloverPart(part)
- {
- this.m_mouseOverMC = part;
- part.gotoAndStop("over");
- }
- function rolloutPart(part)
- {
- if(this.m_mouseOverMC == part)
- {
- this.m_mouseOverMC = null;
- }
- part.gotoAndStop("up");
- }
- function startTrackScroller()
- {
- var _loc1_ = this;
- _loc1_.trackScroller();
- _loc1_.m_scrollingIntervalID = setInterval(_loc1_,"scrollInterval",500,"page",-1);
- }
- function startUpDownScroller(part, dir)
- {
- var _loc1_ = this;
- part.gotoAndStop("down");
- _loc1_.scrollIt("one",dir);
- _loc1_.m_scrollingIntervalID = setInterval(_loc1_,"scrollInterval",500,"one",dir);
- }
- function scrollInterval(inc, dir)
- {
- var _loc1_ = this;
- var _loc2_ = inc;
- clearInterval(_loc1_.m_scrollingIntervalID);
- if(_loc2_ == "page")
- {
- _loc1_.trackScroller();
- }
- else
- {
- _loc1_.scrollIt(_loc2_,dir);
- }
- _loc1_.m_scrollingIntervalID = setInterval(_loc1_,"scrollInterval",35,_loc2_,dir);
- }
- function trackScroller()
- {
- var _loc1_ = this;
- if(_loc1_.m_scrollThumbMC._y + _loc1_.m_thumbHeight < _loc1_._ymouse)
- {
- _loc1_.scrollIt("page",1);
- }
- else if(_loc1_.m_scrollThumbMC._y > _loc1_._ymouse)
- {
- _loc1_.scrollIt("page",-1);
- }
- }
- }
-